#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

/*
题目描述
现有 m 所学校，每所学校预计分数线是 a 
i
​
 。有 n 位学生，估分分别为 b 
i
​
 。

根据 n 位学生的估分情况，分别给每位学生推荐一所学校，要求学校的预计分数线和学生的估分相差最小（可高可低，毕竟是估分嘛），这个最小值为不满意度。求所有学生不满意度和的最小值。

输入格式
第一行读入两个整数 m,n。m 表示学校数，n 表示学生数。

第二行共有 m 个数，表示 m 个学校的预计录取分数。第三行有 n 个数，表示 n 个学生的估分成绩。

输出格式
输出一行，为最小的不满度之和。

输入输出样例
4 3
513 598 567 689
500 600 550

*/
int main()
{
    int m, n;
    cin >> m >> n;
    vector<int> School_lines(m);
    vector<int> Student_scores(n);
    for (int i = 0; i < m; i++)
    {
        cin >> School_lines[i];
    }
    sort(School_lines.begin(), School_lines.end());
    int unsatisfaction = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> Student_scores[i];
        int l = 0, r = m - 1;
        int mid;
        while (l < r)
        {
            mid = (l + r) / 2;
            if (School_lines[mid] >= Student_scores[i])
            {
                r = mid;
            }
            if (School_lines[mid] < Student_scores[i])
            {
                l = mid + 1;
            }
        }
        if(l==0)
        {
            unsatisfaction += School_lines[0]-Student_scores[i];
        }
        else{
            unsatisfaction += min(abs(School_lines[l] - Student_scores[i]),abs(School_lines[l-1] - Student_scores[i]));
        }
    }
    cout << unsatisfaction;

    return 0;
}